Глава 6. Командный интерфейс

Командный интерфейс – это основное средство доступа пользователя к функциональности приложения, средство, которое позволяет перемещаться между формами и выполнять те или иные действия. Разработчик конфигурации не прописывает детально команды глобального интерфейса и командных панелей форм для каждой реализуемой в приложении роли пользователя (или комбинации таких ролей), а описывает те правила, по которым командный интерфейс будет автоматически формироваться для пользователя.

Формирование командного интерфейса выполняется в зависимости от прав пользователя (см. здесь), функциональных опций приложения (см. здесь) и, наконец, настроек самого пользователя.

Такое декларативное описание командного интерфейса помогает решить задачу согласования предоставленных пользователю команд и прав пользователя на выполнение тех или иных действий, а также задачу модификации командного интерфейса приложения при неполном внедрении возможностей приложения.

6.1. Общее устройство командного интерфейса

6.1.1. Разделы и подразделы основного окна приложения

Все глобальные команды основного окна приложения объединяются в разделы. Переход между ними осуществляется при помощи панели разделов. Состав этих разделов однозначно определяется составом подсистем верхнего уровня, для которых установлен признак Включать в командный интерфейс.

Команды текущего раздела отображаются в панели навигации и панели действий основного окна.

При отображении команд того или иного раздела в панели навигации возможно появление одного или нескольких «подразделов», каждый из которых – это совокупность команд, соответствующих подчиненной подсистеме (также с признаком Включать в командный интерфейс). Например, в разделе Торговый учет возможно появление подразделов Розничная торговля и Оптовая торговля за счет существования соответствующих подчиненных подсистем.

6.1.2. Виды команд

Командный интерфейс пользователя можно разделить:

● на независимые глобальные команды,

● параметризуемые глобальные команды,

● локальные команды формы.

В рамках данного раздела мы будем рассматривать только глобальные команды (описание локальных команд формы см. здесь). С другой стороны, команды делятся:

● на стандартные команды (автоматически добавляемые системой в командный интерфейс);

● навигационные команды;

● команды действия;

● команды, созданные в конфигурации.

6.1.2.1. Стандартные команды

Для большинства объектов конфигурации система предоставляет стандартные команды, которые автоматически помещаются в командный интерфейс. Ниже приведен список таких объектов и стандартные команды, которые для них предоставляет система:

● Общая форма:

● Открыть общую форму;

● Константы:

● Открыть форму редактирования константы;

● Справочники:

● Открыть форму списка;

● Открыть форму нового;

● Открыть форму новой группы;

● Ввод на основании;

● Перейти к списку с отбором по владельцу;

● Документы:

● Открыть форму списка;

● Открыть форму нового;

● Ввод на основании;

● Журналы документов:

● Открыть форму списка;

● Отчеты:

● Открыть основную форму;

● Обработки:

● Открыть основную форму;

● План видов характеристик:

● Открыть форму списка;

● Открыть форму нового;

● Открыть форму новой группы;

● Ввод на основании;

● Планы счетов:

● Открыть форму списка;

● Открыть форму нового;

● Ввод на основании;

● Планы видов расчета:

● Открыть форму списка;

● Открыть форму нового;

● Ввод на основании;

● Перечисления:

● Открыть форму списка;

● Регистры сведений:

● Открыть форму списка;

● Открыть форму нового;

● Перейти к списку с отбором по регистратору;

● Регистры накопления:

● Открыть форму списка;

● Перейти к списку с отбором по регистратору;

● Регистры бухгалтерии:

● Открыть форму списка;

● Перейти к списку с отбором по регистратору;

● Регистры расчета:

● Открыть форму списка;

● Перейти к списку с отбором по регистратору;

● Бизнес-процессы:

● Открыть форму списка;

● Открыть форму нового;

● Ввод на основании;

● Перейти к списку задач с отбором по бизнес-процессу;

● Задачи:

● Открыть форму списка;

● Открыть форму нового;

● Ввод на основании;

● Планы обмена:

● Открыть форму списка;

● Открыть форму нового;

● Ввод на основании;

● Критерии отбора:

● Открыть форму списка.

6.1.2.1.1. Формирование и размещение стандартных команд

Стандартные команды открытия формы списка и создания нового элемента формируются всегда, если не выключено свойство Использовать стандартные команды.

Стандартная команда отчета формируется, если у отчета задана основная схема компоновки данных или задана основная или дополнительная форма.

Стандартная команда обработки формируется, если у обработки задана основная или дополнительная форма.

Стандартные команды для ввода на основании создаются системой в том случае, если соответствующим образом задано свойство Ввод на основании. Например, если для справочника Товары и для справочника Партии товаров сказано, что на их основании возможен ввод документов Приходная накладная и Расходная накладная, то у справочников появится стандартная команда ввода на основании.

Стандартные команды для открытия формы списка с отбором по владельцу формируются в том случае, если соответствующим образом задано свойство справочника Владельцы, а для регистра сведений есть одно или несколько измерений с признаком Ведущее.

Стандартная команда формы списка с отбором по регистратору формируется для регистров, подчиненных регистратору.

Стандартные команды размещаются следующим образом:

Панель

Размещаемые команды

Панель навигации

Команды открытия списков

Панель действий

● Команда открытия формы редактирования констант.

● Команды открытия форм новых объектов.

● Команды открытия форм отчетов и обработок

Панель навигации формы

Команды открытия формы списка с отборами

Командная панель формы

Команды ввода на основании

6.1.2.1.2. Параметризуемые стандартные команды

Некоторые стандартные команды являются параметризуемыми, т. е. могут быть выполнены в контексте той или иной формы, получив в качестве параметра некоторое значение.

Команда

Тип параметра

Ввод на основании

Ссылка на объект-основание

Открытие списка с отбором по владельцу

Ссылка на объект-владелец

Открытие списка с отбором по регистратору

Ссылка на документ-регистратор

Открытие списка критерия отбора

Ссылка на значение критерия отбора

О порядке формирования типа параметра стандартных параметризуемых команд см. здесь.

Так, если для справочника Товары и для справочника Партии товаров сказано, что на их основании возможен ввод документа Приходная накладная, то тип параметра команды ввода на основании будет составным: СправочникСсылка.Товары и СправочникСсылка.ПартииТоваров. Поэтому стандартная команда Ввод приходной накладной на основании будет автоматически размещена в формах элементов справочников товаров и партий товаров.

6.1.2.2. Независимые и параметризуемые глобальные команды

Независимые глобальные команды предназначены для выбора пользователем той или иной функциональности в рамках приложения в целом. Выполнение такой команды не требует дополнительной информации (параметров). Это, например, такие команды, как:

● открытие списка справочника,

● открытие журнала документов,

● открытие формы того или иного отчета,

● открытие формы нового элемента справочника и т. д.

Параметризуемые глобальные команды зависят от контекста выполнения и не могут быть выполнены без получения дополнительной информации (параметра выполнения команды). Это, например, такие команды, как:

● открытие списка подчиненного справочника (параметр – ссылка на элемент справочника-владельца);

● открытие списка записей регистра, подчиненного регистратору (параметр – ссылка на документ-регистратор);

● ввод одного объекта на основании другого (параметр – объект, служащий «основанием»).

Параметризуемые команды могут отображаться в панели навигации вспомогательного окна и непосредственно в командной панели формы.

Глобальные команды отображаются в командной панели формы перед командой Открыть справку. При этом команды группы Важное размещаются непосредственно в командной панели, а остальные группы команд (стандартная группа Создать на основании и другие группы категории Командная панель формы) размещаются в виде подменю. Выполнение глобальных команд, размещенных в командной панели формы, приводит к открытию нового вспомогательного окна приложения.

Следует помнить, что глобальные команды не отрабатывают свойство Пометка. Данное свойство предназначено для использования только командами формы (см. здесь).

6.1.2.3. Навигационные команды и команды действия

Навигационными будем называть те команды, которые предназначены для перехода пользователя к очередной форме приложения, не покидая текущее (основное или вспомогательное) окно приложения. Навигационная команда открывает очередную форму в том же окне приложения, в котором команда была вызвана пользователем.

Навигационными могут быть как независимые команды глобального командного интерфейса, так и параметризуемые глобальные команды. Навигационные команды размещаются в панели навигации основного или вспомогательного окна приложения.

Примерами навигационных команд основного окна приложения могут служить команды перехода к списку справочника или журналу документов. Например, команда Валюты откроет в том же окне форму списка валют, а команда Финансовые документы откроет в том же окне форму списка документов.

Примерами навигационных команд вспомогательного окна приложения могут служить команды перехода к спискам, логически подчиненным тому объекту, который редактируется в данном окне. Например, в форме редактирования элемента справочника валют может быть команда перехода к регистру сведений с историей изменения курса валюты; в форме документа может быть команда перехода к его движениям по тому или иному регистру и т. д.

Примечание. Отказ от открытия формы не прерывает выполнение навигационной команды. Использование отказа от открытия формы в навигационных командах приведет к открытию пустой формы.

Командами действия будем называть те команды, выполнение которых, как правило, приводит к открытию нового вспомогательного окна приложения. Такие команды на некоторое время переключают пользователя на выполнение другой задачи, т. е. существенно изменяют контекст его деятельности. Например, команда создания нового документа переводит пользователя от задачи навигации по приложению, выполняемой в основном окне приложения, к задаче ввода нового документа.

Такие команды размещаются в панели действий основного окна приложения или в командной панели формы, отображаемой во вспомогательном окне приложения.

6.1.2.4. Команды, созданные в конфигурации

Кроме стандартных команд разработчик конфигурации может создать свои собственные команды, установить для них место размещения (группу команд), описать на встроенном языке действие, выполняемое при выполнении команд, и т. д.

Более подробно о свойствах объекта Команда см. здесь и см. здесь.

6.1.3. Группы команд

Все глобальные команды по месту своего размещения и по своему характеру делятся на четыре категории.

Категория

Описание

Панель навигации

Для размещения независимых навигационных команд

Панель навигации формы

Для размещения параметризуемых навигационных команд, вызываемых из формы

Панель действий

Для размещения команд, приводящих к появлению нового вспомогательного окна приложения

Командная панель формы

Для размещения в форме параметризуемых команд, приводящих к появлению нового вспомогательного окна приложения

Приведенные здесь категории представляют собой перечень тех мест интерфейса приложения, в которых могут отображаться глобальные команды.

Для группировки глобальных команд система реализует стандартные группы команд.

Место размещения

Стандартные группы команд

Панель навигации

● Важное,

● Обычное,

● См. также

Панель действий

● Создать,

● Отчеты,

● Сервис

Панель навигации формы

● Важное,

● Перейти,

● См. также

Командная панель формы

● Важное,

● Создать на основании

Кроме того, при разработке конфигурации разработчик может создать собственные группы команд (объект конфигурации Общие – Группы команд, см. здесь), которые можно отнести к одной из перечисленных выше категорий (свойство Категория группы команд). Эти группы могут наряду с предопределенными группами использоваться для размещения в них разрабатываемых команд.

6.2. Построение глобального командного интерфейса

В данном разделе рассмотрены объекты и свойства объектов конфигурации, влияющие на построение глобального командного интерфейса конфигурации.

6.2.1. Подсистемы

Основа формирования глобального командного интерфейса основного окна приложения – структура подсистем конфигурации. Именно подсистемы формируют представление пользователя о функциональности приложения в целом. Структура подсистем описывает для пользователя общую функциональность системы. Таким образом, построение глобального командного интерфейса основного окна приложения «от структуры подсистем» налагает на разработчика определенную ответственность при разработке подсистем конфигурации. Фактически структура подсистем – это первое, что увидит пользователь при ознакомлении с приложением.

Рис. 185. Отображение подсистем в разделы

На структуру командного интерфейса влияют подсистемы, которым установлено свойство Включать в командный интерфейс. Но данное свойство устанавливается подсистемам по умолчанию, и, таким образом, предполагается, что подсистемы создаются в первую очередь именно для описания глобального командного интерфейса.

Примечание. Если в конфигурации нет ни одной подсистемы с установленным свойством Включать в командный интерфейс, то панель разделов не отображается в основном окне приложения.

Подсистемы первого уровня приводят к появлению в приложении разделов – совокупности глобальных команд определенной предметной направленности. Разделы отображаются в панели разделов основного окна приложения. Выбор того или иного раздела изменяет состав команд панели навигации и панели действий.

Подсистемы более низкого уровня приводят к появлению в панели навигации подразделов, в которые собираются команды соответствующей подсистемы.

Принадлежность объекта к тому или иному набору подсистем определяет появление команд объекта в соответствующих фрагментах командного интерфейса конфигурации. Однако новые объекты по умолчанию не принадлежат ни одной подсистеме. Это означает, что команды объекта отсутствуют в командном интерфейсе. Поэтому для помещения стандартных и созданных разработчиком команд объекта в соответствующие фрагменты командного интерфейса необходимо указать, каким подсистемам принадлежит этот объект.

Принадлежность объекта к разным подсистемам является независимой, т. е. объект можно отнести одновременно как к «родительской» и «подчиненной» подсистемам, так и только к «подчиненной», если это целесообразно из соображений формирования командного интерфейса.

Примечание. Если в конфигурации нет ни одной подсистемы с установленным свойством Включать в командный интерфейс, то на рабочий стол попадают все команды, которые на нем можно было разместить вручную. В этой ситуации меняется внешний вид редактора командного интерфейса рабочего стола: в нем исчезает дерево команд и пропадает возможность удалить команду с рабочего стола.

Как только появляется первая подсистема, включенная в командный интерфейс, автоматическое добавление команд на начальную страницу перестает действовать и команды нужно размещать явно.

Примечание. Режим автоматического размещения на начальной странице всех команд не действует, если у конфигурации установлен режим запуска Обычное приложение.

При формировании панели разделов используются все подсистемы первого уровня, которые соответствуют всем нижеперечисленным условиям:

1. Свойство Включать в командный интерфейс установлено в значение Истина;

2. Права доступа (см. здесь) обеспечивают доступность подсистемы для текущего пользователя;

3. Подсистема не отключена функциональными опциями;

4. Подсистема не отключена пользователем с помощью диалога настройки панели разделов.

В том случае, если в разделе все команды недоступны текущему пользователю (в силу отсутствия прав доступа или команды отключены функциональными опциями или пользовательскими настройками), такой раздел все равно будет отображаться в панели разделов.

6.2.2. Команды

Как говорилось выше, существуют стандартные команды, предоставляемые системой автоматически, и команды, создаваемые разработчиком в конфигурации.

Объект конфигурации Команда может быть создан как подчиненный объект для следующих объектов конфигурации:

● Справочники,

● Документы,

● Журнал документов,

● Отчеты,

● Обработки,

● Планы видов характеристик,

● Перечисления,

● Планы счетов,

● Планы видов расчета,

● Регистры сведений,

● Регистры накопления,

● Регистры бухгалтерии,

● Регистры расчета,

● Бизнес-процессы,

● Задачи,

● Планы обмена,

● Критерии отбора.

Кроме того, возможно создание общих команд (ветка дерева конфигурации Общие – Общие команды, см. здесь).

6.2.3. Параметризация команды

Если команда является параметризуемой, то ее выполнение предполагает получение некоторого значения в качестве параметра. Источником такого значения могут служить только данные формы.

ВНИМАНИЕ! Задавать тип значения параметра команды имеет смысл только для тех команд, которые размещаются в формах (относятся к группам категорий Командная панель формы или Панель навигации формы).

Свойство Тип параметра команды фактически задает состав форм, в контексте которых возможно выполнение данной команды. Например, если команда имеет тип параметра СправочникСсылка.Товары, то она может быть выполнена:

● в форме элемента справочника Товары, где параметром послужит ссылка на редактируемый в форме объект;

● в форме списка справочника Товары, где параметром послужит ссылка из текущей строки списка;

● в форме приходной накладной, где параметром послужит ссылка на товар из текущей строки табличной части документа и т. д.

Количество значений выбранного типа, которые будут переданы команде в качестве значений параметра, определяет свойство Режим использования параметра. Если это свойство установлено в значение Одиночный, то в команду передается одно значение указанного типа.

Если свойство установлено в значение Множественный, то в качестве параметра всегда передается массив значений (даже если выбрано одно значение). Этот режим имеет смысл выбирать тогда, когда источником данных для команды может являться таблица в режиме множественного выделения. В этом случае первым элементом массива будет выступать текущая строка (вне зависимости от последовательности выделения строк табличного поля). Так, если мы имеем список товаров, состоящий из элементов Миксер, Пылесос, Холодильник, Чайник, в котором выделены элементы Миксер, Холодильник и Чайник, а текущей строкой является Холодильник, то команда получит массив следующего содержания (по порядку элементов): Холодильник, Миксер, Чайник. Порядок элементов после первого не определен, несмотря на некоторый порядок, приведенный в примере.

Примечание. Если текущая строка не входит в выделение, то первый элемент в массиве невозможно идентифицировать однозначно.

При размещении на форме нескольких таблиц управляемой формы, связанных с одним реквизитом формы типа ДинамическийСписок, неопределено, данные какой из этих таблиц будут использоваться для параметризации команды.

Формирование фрагментов командного интерфейса форм выполняется автоматически на основании типа основного реквизита. При редактировании формы возможно дополнение фрагмента командного интерфейса разработчиком формы. Например, если форма предназначена для редактирования товара, то в нее автоматически попадут все команды, тип параметра которых – СправочникСсылка.Товары (например, Печать карточки товара, Переход к списку цен товара и т. д.). Если товар имеет реквизит Производитель, то при разработке формы в нее также можно будет включить и команды с типом параметра СправочникСсылка.Контрагент (например, Карточка контрагента, Договора контрагента и т. д.), так как в форме можно получить значение для параметра таких команд. Но такие команды (которые не относятся к основному реквизиту) автоматически не включаются в командный интерфейс, но разработчик может включить их с помощью редактора формы.

Для группы справочника (вид иерархии Иерархия групп и элементов) и иерархического плана видов характеристик не происходит автоматического включения в командный интерфейс формы группы параметризуемых глобальных команд, однако разработчик может включить такие команды в командный интерфейс с помощью редактора формы.

6.2.4. Формирование командного интерфейса по умолчанию

На место размещения команд влияют свойства Тип параметра команды, Группа и принадлежность команды (или родительского объекта) к той или иной подсистеме.

Независимые (т. е. непараметризуемые) команды относятся к фрагментам глобального командного интерфейса, соответствующим подсистемам, в которые включен объект-владелец или сама команда (для общих команд).

Параметризуемые команды относятся к фрагментам глобального командного интерфейса, соответствующим тем объектам, типы которых заданы в свойстве Тип параметра команды.

Группа команд и в первом, и во втором случае – это своеобразное уточнение размещения команды в пределах одного фрагмента. Так, например, группы команд задают, в какой панели (навигации или действий) будут размещены независимые команды того или иного раздела. А для параметризуемых команд группа команд определяет, будет ли команда размещена в панели навигации формы или в командной панели формы.

Таким образом, для независимых команд (команд, не требующих параметра, таких как открытие списка или открытие формы нового объекта) возможность размещения по умолчанию в категории иной, чем панель навигации или панель действий, востребована крайне редко. В свою очередь, размещение параметризуемых команд в панели навигации или панели действия не имеет смысла, так как в контексте основного окна приложения такие команды не могут получить параметры, необходимые для их исполнения. Приведем таблицу расположения команд.

Независимые
команды

Параметризуемые
команды

Навигационные команды

Панель
навигации

Панель
навигации формы

Команды
действия

Панель
действий

Командная
панель формы

Следует помнить, что по умолчанию глобальные команды не попадают в командный интерфейс форм групп иерархических справочников и планов видов характеристик. Для того чтобы глобальная команда была доступна в командном интерфейсе такой формы, ее необходимо разместить там вручную, с помощью редактора формы.

При формировании командного интерфейса используются текстовые представления объектов конфигурации и различных команд. По умолчанию система формирует представления исходя из свойств Синоним и Имя. Однако есть возможность влиять на это представление. Для этого используются представления объекта и списка. Подробнее об этом см. здесь.

6.2.5. Свойство «Командный интерфейс»

Свойства Командный интерфейс (для подсистем), Командный интерфейс (для конфигурации) и Командный интерфейс основного раздела (для конфигурации) предназначены для редактирования состава глобальных команд соответствующего раздела или состава команд основного раздела. Редактирование этих свойств выполняется в том случае, если не устраивает автоматически сформированный порядок команд, группы, к которым отнесены команды в контексте данного раздела, и установленная автоматически видимость по умолчанию.

В разных разделах одна и та же команда может отображаться в разных местах панели навигации или панели действия и может иметь разную видимость по умолчанию. Например, команда открытия списка справочника Товары с точки зрения раздела Торговля является важной и часто используемой, и разработчик может поместить ее в группу Важное. А с точки зрения раздела Бухгалтерский учет не так важна, и разработчик может поместить ее в группу См. также.

Подробнее о редакторе фрагмента командного интерфейса см. здесь и см. здесь.

6.2.6. Редактирование состава команд

Кроме возможности редактирования свойства подсистемы Командный интерфейс при помощи редактора этого свойства существует возможность редактирования состава команд сразу всех разделов в редакторе Все подсистемы (см. здесь).

Редактирование состава глобальных команд, отображаемых в форме, выполняется в редакторе формы, на закладке Командный интерфейс (см. здесь).

6.2.7. Ролевая настройка видимости команд по умолчанию

При автоматическом формировании команд разделов и команд форм устанавливается следующая видимость по умолчанию.

По умолчанию видимы:

● команды открытия списков справочников, документов, журналов документов, планов видов характеристик, планов видов расчета, планов счетов, независимых регистров сведений, бизнес-процессов, задач и планов обмена;

● команды открытия форм отчетов и обработок;

● команда открытия формы редактирования констант;

● команды перехода к списку подчиненного справочника;

● команды перехода к списку логически подчиненного регистра сведений (т. е. регистра с «ведущими» измерениями);

● команды ввода на основании;

● произвольные команды, созданные разработчиком при конфигурировании.

По умолчанию невидимы:

● команды открытия списков перечислений, регистров сведений, подчиненных регистратору, регистров накоплений, регистров бухгалтерии, регистров расчета;

● команды открытия форм нового объекта и новой группы;

● команды перехода к спискам подчиненных регистров;

● команды перехода к спискам критериев отбора.

Эти значения видимости, формируемые системой автоматически, могут быть изменены как для параметризуемых, так и для независимых команд. Причем значение видимости по умолчанию может быть задано в разрезе ролей, применяемых в конфигурации. При отображении команд в режиме 1С:Предприятие команда будет видна по умолчанию, если хотя бы для одной из ролей пользователя задана видимость для данной команды.

При редактировании ролевой видимости следует исходить из того, что видимость команды для той или иной роли вступает в силу только тогда, когда команда доступна для этой роли. Таким образом, при настройке видимости для роли, сильно ограниченной в правах, почти никогда нет необходимости дополнительно скрывать команды, снимая им видимость по умолчанию (общее число доступных команд в том или ином разделе и так невелико).

Ролевое редактирование видимости по умолчанию – это средство, позволяющее настроить начальную «насыщенность» глобального командного интерфейса в первую очередь для пользователей с широкими правами доступа.

6.3. Сервисные возможности навигации

6.3.1. Ссылки

В «1С:Предприятии» имеется возможность получить текстовую ссылку на любой раздел командного интерфейса, отчет, обработку и на объекты информационной базы (документы, элементы справочников и т. д.).

Рис. 186. Команды получения и перехода по ссылке

Полученную ссылку можно сохранить и использовать в дальнейшем для перехода по ней. Так как ссылки являются текстовыми, то их можно отправлять другим пользователям, например, по электронной почте. Описание форматов ссылок см. здесь. Нельзя получить ссылку на инструменты, входящие в состав стандартных функций.

Существует возможность запускать веб-клиент с одновременным переходом по ссылке. Для этого необходимо получить внешнюю ссылку из веб-клиента или тонкого клиента, подключенного к информационной базе через веб-сервер.

Рис. 187. Получение внешней ссылки

Для получения внешней ссылки следует воспользоваться обычной командой получения ссылки, убедившись, что в окне получения ссылки нажата кнопка Внешняя (см. рис. 187). Полученную ссылку можно ввести в адресной строке браузера, при этом будет загружено приложение и выполнен переход по ссылке (в примере на рис. 187 произойдет открытие формы отчета Остатки товаров).

Примечание. В Microsoft Internet Explorer не происходит загрузка приложения с переходом по ссылке, если ссылка относится к приложению, загруженному в текущем окне веб-браузера. Рекомендуется вводить ссылку в адресную строку нового пустого окна веб-браузера.

6.3.2. Оповещения пользователя

Механизм оповещений предназначен для информирования пользователей о том, что система выполнила то или иное действие. Оповещения могут создаваться системой или разработчиком прикладного решения. Система создает оповещения при интерактивной записи/изменении объекта, а разработчик – вызовом метода ПоказатьОповещениеПользователя().

Оповещение отображается в окне, которое по умолчанию расположено в правом нижнем углу рабочей области экрана. Если с оповещением связана какая-либо ссылка, то пояснение будет одновременно являться гиперссылкой, ее нажатие приведет к открытию объекта, на который указывает ссылка. Пояснение также будет представлено гиперссылкой, если оповещение сформировано системой автоматически (при интерактивной записи/изменении объекта).

Рис. 188. Оповещение пользователя

Если при вызове метода не указан параметр Пояснение, то переход по навигационной ссылке также будет недоступен. Для того чтобы пользователь имел возможность перейти по гиперссылке, необходимо одновременно указывать и параметр Навигационная ссылка, и параметр Пояснение.

Окно оповещения автоматически исчезает с экрана по истечении небольшого времени. Однако если навести на это окно курсор мыши, то окно будет существовать до тех пор, пока его принудительно не закроют или не уберут курсор мыши с площади окна оповещения.

Если вызвать метод отображения оповещения несколько раз подряд, то пользователь увидит только самое последнее оповещение.

Примечание. Окно оповещения располагается поверх всех окон текущего приложения, кроме модальных окон. Модальное окно выводится поверх окна оповещения.

При отображении в панели избранного и истории список оповещений выравнивается по правому краю панели. Наиболее позднее оповещение будет отображаться у правого края панели. Если оповещений больше пяти, то отображаются только пять последних оповещений.

Примечание. Список оповещений отображается только в течение жизни сеанса.

Окна оповещений, которые открываются в веб-клиенте, привязаны к текущему активному окну:

Рис. 189. Оповещение пользователя в веб-клиенте

При закрытии окна, в котором было показано окно оповещения, это окно «передается» родительскому окну и т. д. до достижения основного окна приложения.

Примечание. В веб-клиенте нельзя перемещать окно оповещения и изменять его размер.

6.3.3. Отображение состояния длительных процессов

В процессе разработки конфигурации возникают ситуации, когда необходимо информировать пользователя системы о состоянии выполнения длительных процессов (например, расчет зарплаты по подразделению). Для этого предназначена панель состояния.

Панель состояния отображается вызовом метода Состояние() и недоступна для вызова на стороне сервера. В том случае, если необходимо отобразить на клиенте состояние длительного процесса, протекающего на сервере, нужно реализовать этот процесс таким образом, чтобы он мог выполняться на сервере «порциями», которые будут инициироваться со стороны клиента. Тогда одновременно со стартом очередной «порции» на сервере можно будет отображать изменение состояния выполнения процесса. Панель состояния отображается в окне, которое по умолчанию расположено в правом нижнем углу рабочей области экрана.

Рис. 190. Окно отображения состояния

Если требуется отображать ход выполнения процесса с помощью индикатора (например, мы знаем общее количество рассчитываемых сотрудников и хотим показать, сколько сотрудников уже рассчитано), то при вызове метода Состояние() необходимо указывать третий параметр метода, который определяет абсолютное значение индикатора прогресса. Минимальное значение индикатора прогресса всегда равно 0, а максимальное значение – 100.

Копировать в буфер обмена
Состояние("Выполняется проведение документов (" + ПредставлениеПериода(ДатаНачала, ДатаОкончания) + ")", ДляПрогресса, "Проводятся документы за " + ДатаОбработки + ". Всего: "+ Счетчик, БиблиотекаКартинок.Провести);

Если при вызове метода третий параметр не указан, то индикатор прогресса также не будет отображаться на панели состояния. При этом текст пояснения будет располагаться непосредственно под текстом основного описания:

Копировать в буфер обмена
Состояние("Проведение выполнено, , "Всего обработано документов: " + КоличествоОбработанных + Символы.ПС + "Проведено документов: " + КоличествоПроведенных, БиблиотекаКартинок.Провести); 

Рис. 191. Состояние без прогресса

Панель состояния автоматически исчезает с экрана по истечении небольшого времени после окончания работы фрагмента программы, вызвавшего появление панели состояния. Однако если навести на это окно курсор мыши, то окно будет существовать до тех пор, пока его принудительно не закроют или не уберут курсор мыши с площади панели состояния.

Примечание. Панель состояния располагается поверх всех окон текущего приложения, кроме модальных окон. Модальное окно выводится поверх панели состояния.

В веб-клиенте панель состояния реализована в виде отдельного окна веб-браузера. Обновление этого окна имеет особенности:

Microsoft Internet Explorer. Состояние обновляется после каждого вызова метода Состояние().

Mozilla Firefox. Состояние обновляется при каждом серверном вызове и после окончании выполнения программного кода на встроенном языке. Таким образом, если при выполнении программного кода на встроенном языке не было вызовов серверных методов, то панель состояния изменяться не будет.

Google Chrome и Safari. Состояние обновляется только после окончания выполнения программного кода на встроенном языке.

6.3.4. Сообщения

В прикладном решении большинство сообщений логически связано с данными. Например, если при проведении документа на складе не хватает некоторого количества определенной номенклатуры, программист должен уведомить об этом пользователя.

Механизм сообщений позволяет разработчику сформировать сообщение, в котором можно указать, какой из реквизитов объекта стал причиной ошибки. При отображении в клиентском приложении сообщение может быть автоматически привязано к элементу формы, который редактирует этот реквизит, и рядом с ним будет выведено заданное сообщение.

Сообщения выводятся в панель сообщений, которая располагается в нижней части рабочей области. Высота панели сообщений не превышает 5 строк. Если в панели размещается большее количество сообщений – появляется полоса прокрутки, но панель по высоте не увеличивается. Вручную также невозможно изменить высоту панели сообщений.

Для функционирования этого механизма в платформе существует объект СообщениеПользователю.

Рис. 192. Сообщения

Механизм сообщений ориентирован на то, чтобы сообщить пользователю, что запрошенное им действие выполнить не удалось. Например, проведение документа невозможно из-за отсутствия остатков товара на складе.

Если сообщение привязано к полю табличной части, то изменение порядка строк табличной части не оказывает влияния на корректность отображения сообщения.

Рис. 193. Сообщения в табличной части

Если строка, к которой было привязано сообщение, удалена, то сообщение будет привязано к элементу формы (см. здесь), который отображает табличную часть.

В том случае, если сообщение привязано к строке таблицы, связанной с реквизитом формы типа ДанныеФормыКоллекция, ДанныеФормыДерево или ДанныеФормыСтруктураИКоллекция, в этой таблице пользователем интерактивно выполнен поиск (с помощью соответствующей стандартной команды), в результате поиска строка, для которой создано сообщение, оказалась скрытой, то поиск будет автоматически отменен и сообщение будет показано в нужном месте. Если в таблице установлен программный отбор (свойство ОтборСтрок), то такой отбор не отменяется при отображении сообщения и выполняется позиционирование сообщения на таблицу в целом.

Сообщения, формируемые методом глобального контекста Сообщить() или при помощи объекта СообщениеПользователю, рекомендуется использовать только для информирования об ошибочных действиях. Также рекомендуется сопровождать вывод таких сообщений отказом от закрытия формы, в которой формируются сообщения, если сообщения формируются во время выполнения действия, подразумевающего закрытие формы. Если не блокировать закрытие формы, то возможны ситуации, когда сообщения будут выведены в панель сообщений закрываемой формы и эта панель будет закрыта одновременно со «своей» формой. В этом случае пользователь не увидит выведенные сообщения. Если требуется проинформировать пользователя о каком-либо событии, то рекомендуется использовать для этого метод ПоказатьОповещениеПользователя() (см. здесь).

Чтобы сообщение об ошибке оказалось привязанным к нужному элементу формы, системе нужно знать следующую информацию: какой реквизит, какого объекта информационной базы, каким элементом формы отображается. Заполнение вышеописанных свойств позволяет ответить на все вопросы:

● Задавая значение свойства ПутьКДанным, мы указываем, какой реквизит формы хранит данные нашего объекта информационной базы.

● Задавая свойство Поле, мы указываем реквизит объекта, для которого будет отображаться сообщение. Можно сказать, что в сообщении пойдет речь о данных ПутьКДанным.Поле, которые в базе данных идентифицируются значением КлючКДанным. Дальше система автоматически (на основании знаний о структуре формы) определит элемент формы, в котором отображается необходимая информация. Затем в привязке к этому элементу формы будет отображено сообщение.

Свойство Поле может содержать описание данных в следующем формате:

● Для реквизитов – строка вида ИмяРеквизита, например, Поставщик, Поставщик.Родитель.

● Для реквизитов табличных частей – строка вида ИмяТабличнойЧасти[ИндексСтроки].ИмяРекизита, например, Номенклатура[10].Количество.

● Для строк наборов записей – строка вида [ИндексСтроки].ИмяРеквизита, например, [10].Валюта.

● Следует помнить, что если поле, к которому привязано сообщение, будет перенесено пользователем из таблицы на форму (для табличных частей и наборов записей), то сообщение перестанет привязываться к этому полю.

● Свойство ИдентификаторНазначения описывает, к какой форме должно быть привязано сообщение. Например, если сообщение формируется из формы, отображаемой на начальной странице, указание свойства ИдентификаторНазначения позволит отобразить сообщение, привязанное к той форме, из которой выполнялось формирование сообщения.

Если в сообщении свойство КлючДанных заполнено и не совпадает с ключевым значением основного реквизита текущей формы (ссылкой объекта или ключом записи регистра сведений), то открывается новая форма объекта, соответствующая значению свойства КлючДанных.

● Если у сообщения свойство ПутьКДанным не заполнено, то в него проставляется имя основного реквизита открытой формы объекта, вызывается показ сообщения во вновь открытой форме.

Кроме того, выполняется перенос всех сообщений со свойством КлючДанных, равным значению этого свойства текущего сообщения, из окна текущей формы в открытую форму. При этом перенесенным сообщениям аналогичным образом проставляется свойство ПутьКДанным, если оно не установлено.

Для заполнения пути к данным используется специальный механизм системы, который сохраняет информацию о соответствии элементов формы и объектов, а потом использует ее при вызове метода УстановитьДанные(). Таким образом, до выполнения процедур модуля объекта, в которых формируются сообщения, должно быть установлено соответствие между реквизитами формы и объектами, а в самом модуле разработчику нужно вызывать метод УстановитьДанные().

При выполнении стандартных действий с объектом в форме, например, при проведении документа, расширение формы само создает объект и само устанавливает соответствие. Поэтому в этих случаях разработчику не нужно предпринимать никаких действий.

Примечание. Если при записи нового объекта (плана обмена, справочника, документа, элемента плана счетов, элемента плана видов характеристик, элемента плана видов расчета, бизнес-процесса, задачи) в транзакции формировались сообщения пользователю, то при отмене транзакции в сообщениях очищаются ссылки на данный объект (свойство КлючДанных).

Ниже описывается, как установить соответствие, если объект создается из данных формы программно.

Связь между объектом и формой может быть задана явно, путем вызова метода, или неявно. Для явной установки соответствия используется метод УстановитьСоответствиеОбъектаФормы(). В качестве второго параметра в метод передается информация о том, в какой форме отображается объект (свойство ИдентификаторФормы) и в каком реквизите указанной формы хранится объект данных (свойство Реквизит) для последующей установки правильного соответствия сообщений и элементов управления формы:

Копировать в буфер обмена
Параметры = Новый Структура;
Параметры.Вставить("ИдентификаторФормы", УникальныйИдентификатор);
Параметры.Вставить("Реквизит", "Объект");
УстановитьСоответствиеОбъектаИФормы(Объект, Параметры);

Установленное соответствие будет существовать до тех пор, пока существует объект, для которого установлено соответствие.

Для того чтобы сообщение использовало данные соответствия объекта и имени реквизита, необходимо связать сообщение с данными через метод УстановитьДанные() объекта СообщениеПользователю.

Копировать в буфер обмена
ОбъектСправочник = СсылкаСправочник.ПолучитьОбъект();
Параметры = Новый Структура;
Параметры.Вставить("ИдентификаторФормы", ИдентификаторФормы);
Параметры.Вставить("Реквизит", "Объект");
УстановитьСоответствиеОбъектаИФормы(ОбъектСправочник, Параметры);
ОбъектСправочник.ПроверитьЗаполнение();

Нужно понимать, что в методе УстановитьСоответствиеОбъектаИФормы() указывается имя реквизита для той формы, которая будет открыта по умолчанию для отображения элемента используемого справочника (в примере ОбъектСправочник). Тогда сообщения, которые создаются в обработчике проверки заполнения (ОбъектСправочник.ПроверитьЗаполнение()), будут корректно привязаны к реквизитам новой формы. Если свойство ИндентификаторФормы структуры Параметры (в примере выше) содержит уникальный идентификатор, который не соответствует ни одному экземпляру формы, то для отображения сообщения будет создана и открыта новая форма.

Получить соответствие можно методом ПолучитьСоответствиеОбъектаИФормы(). Получить соответствие можно до тех пор, пока существует объект, для которого оно установлено.

Копировать в буфер обмена
ОписаниеСоответствия = ПолучитьСоответствиеОбъектаИФормы(Объект);

Если для переданного объекта существует соответствие с реквизитом, имя реквизита будет возвращено как результат работы функции. Кроме того, соответствие может быть установлено формой при использовании метода РеквизитФормыВЗначение(). В большинстве случаев рекомендуется использовать именно этот способ.

Копировать в буфер обмена
// Код в модуле документа.
&НаСервере
Процедура ОбработкаПроведения()
    ...
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = "В строке 10 табличной части " + "Номенклатура не хватает " + НедостающееКоличество + " " + ЕдиницаИзмеренияНоменклатуры;
    Сообщение.Поле = "Номенклатура[9].Количество";
    Сообщение.УстановитьДанные(ЭтотОбъект);
    Сообщение.Сообщить();
    // Сообщение будет показано в форме и привязано к
    // элементу управления, связанному с полем
    // Количество в 10-й строке табличной части
    // Номенклатура.
    ...
КонецПроцедуры;

В случае если создание сообщений пользователю (с помощью объекта СообщениеПользователю) выполняется во время контекстного или неконтекстного серверного вызова из формы, вызова из общего модуля или из модуля общей команды, вывод сообщений блокируется. Созданные сообщения будут показаны пользователю после возврата управления на клиентскую сторону. Для получения списка непоказанных сообщений используется метод ПолучитьСообщенияПользователю().

Если в поле ввода, с которым связано сообщение, находится некорректное значение, то в веб-клиенте можно перейти в окно сообщений. В других клиентских приложениях такой переход выполнить невозможно.

6.3.5. Работа сочетаний клавиш

В независимом вспомогательном окне срабатывают сочетания клавиш:

● команд панели навигации главного окна;

● команд панели действий главного окна;

● команд самого вспомогательного окна (как команд формы, так и команд панели навигации).

При этом сочетания клавиш команд основного окна срабатывают, даже если команда, вызываемая тем или иным сочетанием клавиш, невидима, например, была скрыта пользователем. Во вспомогательных окнах не срабатывают сочетания клавиш скрытых команд панели навигации формы и скрытых элементов формы.

В блокирующих окнах работают только сочетания клавиш самих окон, а сочетания клавиш команд главного окна не поддерживаются.

6.3.6. Работа со списком форм

Система позволяет получить список форм, которые в данный момент отображаются в системе, включая формы, расположенные на начальной странице (рабочем столе). Этот список можно получить с помощью функции глобального контекста ПолучитьОкна(). Затем следует проанализировать содержимое полученной коллекции ОкнаКлиентскогоПриложения (состоит из объектов типа ОкноКлиентскогоПриложения):

● Окно с установленным свойством Основное описывает основное окно приложения. Свойство Содержимое для такого окна всегда содержит пустой массив.

● Окно с установленным свойством НачальнаяСтраница описывает начальную страницу (рабочий стол). При этом свойство Содержимое содержит список форм, которые в данный момент размещены на начальной странице (рабочем столе). Более подробное описание программного управления составом форм начальной страницы (рабочего стола) см. здесь.

● Остальные окна описывают вспомогательные окна клиентского приложения. При этом свойство Содержимое для такого окна содержит список форм, открытых в этом окне. Основная форма такого окна будет располагаться в первом элементе массива.

Следующий пример отобразит все окна клиентского приложения, выведет их свойства и список форм, находящихся в том или ином окне клиентского приложения (при наличии таковых).

Пример отображения списка окон:

Копировать в буфер обмена
Окна = ПолучитьОкна();
Для Каждого Окно Из Окна Цикл
    Сообщить("Заголовок: " + Окно.Заголовок);
    Сообщить("Основное окно приложения: " + Окно.Основное);
    Сообщить("Начальная страница: " + Окно.НачальнаяСтраница);
    Сообщить("Форм в окне: " + Окно.Содержимое.Количество());
    Если Окно.Содержимое.Количество() Тогда
        Для каждого Форма Из Окно.Содержимое Цикл
            Сообщить("    Форма : " + Форма.ИмяФормы);
        КонецЦикла;
    КонецЕсли;
    Сообщить("-----");
КонецЦикла

6.3.7. Использование списка переходов

Операционная система Microsoft Windows 7 и старше (версия ОС 6.1 и старше), а также операционная система Linux с оболочкой рабочего стола Unity, предоставляют пользователю возможность использовать так называемые списки переходов (jump list). Данная возможность предоставляет возможность пользователю быстрого перехода к объектам используемой программы (файлы, папки и т. д.) путем нажатия правой кнопки мыши на кнопке командной панели, связанной с данным приложением. Некоторые

объекты (по выбору пользователя) можно закрепить в данном меню с помощью специальной кнопки. На рис.194 приведен пример списка переходов для Проводника в ОС Windows 7.

Рис. 194. Список переходов в панели задач

Подробное описание списка переходов можно получить в описании соответствующей операционной системы.

Система «1С:Предприятие» также предоставляет список переходов. В качестве объекта в данном списке выступает информационная база. Список переходов синхронизирован со списком последних выбранных информационных баз окна программы запуска, даже в том случае, если отображение этого списка в окне программы запуска отключено (подробнее о настройке окна запуска см. здесь).

Рис. 195. Список переходов «1С:Предприятия»

При использовании списков переходов следует помнить следующие особенности поведения системы:

● Запуск информационной базы из списка переходов всегда происходит в режиме 1С:Предприятия.

● Для отображения списка переходов, закрепление следует выполнять с помощью команды Закрепить на панели задач у ярлыка 1C Предприятие, созданного программой установки системы «1С:Предприятие» на рабочем столе.

6.3.8. Установка кнопок окна предпросмотра панели задач

В операционной системе Microsoft Windows 7 и старше, пользователю доступа функция Aero Peak. Эта функция предоставляет возможность увидеть эскизы всех окон, связанных с выбранной программой, наведя курсор мыши на соответствующую кнопку панели задач. Некоторые программы размещают в этих эскизах специальные кнопки, облегчающие управление программой. Например, программа Проигрыватель Windows Media размещает в окне эскиза кнопки перехода по трекам и остановки/запуска воспроизведения.

Рис. 196. Эскиз Проигрывателя Windows Media

Система «1С:Предприятие» предоставляет возможность размещать аналогичные кнопки в эскизах, связанных с запущенными информационными базами. Для этого следует использовать специальное свойство глобального контекста ПанельЗадачОС. Рассмотрим пример использования данного свойства.

В качестве примера добавим в окно эскиза две кнопки:

1. Оформить заказ клиента;

2. Оформить продажу.

Будем создавать кнопки при начале работы системы:

Копировать в буфер обмена
Процедура ПередНачаломРаботыСистемы(Отказ)
    Кнопки = Новый Массив();
    Кнопка1 = Новый Структура();
    Кнопка1.Вставить("Картинка", БиблиотекаКартинок.ЗаказКлиента);
    Кнопка1.Вставить("Заголовок", "Оформить новый заказ клиента");
    Оповещение = Новый ОписаниеОповещения("ДействияКнопок", ОповещенияКнопок, "ОформитьЗаказ");
    Кнопка1.Вставить("Действие", Оповещение);
    Кнопка2 = Новый Структура();
    Кнопка2.Вставить("Картинка", БиблиотекаКартинок.НоваяПродажа);
    Кнопка2.Вставить("Заголовок", "Оформить новую продажу");
    Оповещение = Новый ОписаниеОповещения("ДействияКнопок", ОповещенияКнопок, "ОформитьПродажу");
    Кнопка2.Вставить("Действие", Оповещение);
    Кнопки.Добавить(Кнопка1);
    Кнопки.Добавить(Кнопка2);
    ПанельЗадачОС.УстановитьКнопки(Кнопки);
КонецПроцедуры

При нажатии на какую-либо из созданных кнопок будет срабатывать обработчик, в котором и будет выполняться нужное действие. Однако модуль управляемого приложения не может содержать обработчиков оповещения, поэтому следует создать (или использовать) клиентский общий модуль, в котором будет размещен обработчик. В примере используется общий модуль ОповещенияКнопок и обработчик ДействияКнопок().

Копировать в буфер обмена
Процедура ДействияКнопок(ДополнительныеПараметры) Экспорт
    Если ДополнительныеПараметры = "ОформитьЗаказ" Тогда
        // здесь будет создаваться документ заказа
    ИначеЕсли ДополнительныеПараметры = "ОформитьПродажу" Тогда
        // здесь будет создаваться документ продажи
    КонецЕсли;
КонецПроцедуры

В результате окно эскиза для запущенной информационной базы с указанными выше изменениями будет иметь следующий вид:

Рис. 197. Кнопки в окне эскиза на панели задач

Теперь для создания заказа и продажи нет необходимости разворачивать основное окно приложения и искать в командном интерфейсе нужные команды.

При использовании данного механизма следует помнить о следующих особенностях и ограничениях:

● максимальное количество кнопок в окне эскиза – 7 штук.

● после первого создания нельзя увеличить количество кнопок в окне эскиза. Допускается изменение и скрытие ранее созданных кнопок.

● картинка кнопки может быть любой, но рекомендуется использовать формат .ico, в котором присутствуют картинки размером 16x16, 20x20 и 24x24 (для 96, 120 и 144 DPI соответственно).

● в структуре, описывающей каждую кнопку, обязательными являются все три свойства. Опускать свойства нельзя.

При работе под управлением ОС Linux, а также на ОС Windows XP, создание кнопок в окне эскиза не ведет к каким-либо внешним проявлениям.

6.3.9. Управление значком панели задач

При работе «1С:Предприятия» возникают ситуации, когда «внутри» системы что-то происходит и требуется привлечь внимание пользователя. Например, встроенная почтовая система получила очередную порцию электронной корреспонденции, и увеличился счетчик непрочитанных писем или закончилось какое-то длительное действие и требуется привлечь внимание пользователя.

В том случае, если система работает под управлением ОС Windows 7 (и старше), прикладной разработчик может реализовать следующие возможности:

1. установить значок на пиктограмму информационной базы, отображаемой на командной панели. В качестве значка выступает или картинка или число.

2. инициировать мигание кнопки на командной панели, связанной с информационной базой.

Рассмотрим примеры более подробно.

Установка значка кнопки панели задач

Допустим, что в рамках информационной системы работает специальный механизм обмена заданиями и требуется отображать пользователю, сколько заданий для него есть в системе на данный момент. Для этого используем обработчик ожидания, который каждые 60 секунд (например) будет проверять, сколько заданий установлено пользователю и выводить это число в кнопку, соответствующую информационной базе на командной панели.

Копировать в буфер обмена
Процедура ПередНачаломРаботыСистемы(Отказ)
    ПодключитьОбработчикОжидания("ПроцедураОжидания", 60, Ложь);
КонецПроцедуры
Процедура ПроцедураОжидания() Экспорт
    Счетчик = Сообщения.ПолучитьКоличествоЗаданий();
    Если Счетчик  = 0 Тогда
        ПанельЗадачОС.УдалитьНаклейку();
    Иначе
        ПанельЗадачОС.УстановитьНаклейку(Счетчик, Ложь);
    КонецЕсли;
КонецПроцедуры

Если для пользователя нет заданий – ранее установленное число будет удаляться со значка. Если второй параметр метода УстановитьНаклейку() установлен в значение Истина, то значок будет удален системой при выборе соответствующего приложения.

Мигание кнопкой панели задач

Отображение значка на кнопки панели задач хорошо использовать, когда в приложении есть некоторая перечислимая информация. В этом случае отображение «количества» может оказаться достаточно. В тех ситуациях, когда в системе заканчивается выполнение какого-либо длительного процесса, эту ситуацию нельзя выразить установкой какого-то значка на кнопке панели задач. Однако имеется возможность сигнализировать об этом (окончании процесса) миганием кнопки панели задач.

Для управления такой сигнализацией служит метод ПанельЗадачОС.Сигнализировать(). Поведение системы при вызове этого метода зависит от используемой ОС.

Рассмотрим пример, в котором будет установлена обработка ожидания на интервал 120 секунд, который (интервал) будет имитировать длительный процесс. По окончании интервала будет выполняться 5 миганий кнопкой панели задач.

Копировать в буфер обмена
Процедура ПередНачаломРаботыСистемы(Отказ)
    ПодключитьОбработчикОжидания("ПроцедураОжидания", 120, Истина);
КонецПроцедуры
Процедура ПроцедураОжидания() Экспорт
    ПанельЗадачОС.Сигнализировать(5);
КонецПроцедуры

Через 120 секунд после запуска клиентского приложения, кнопка панели задач, связанная с приложением, выполнит 5 морганий подряд.

Иконки на значке приложения в панели задач ОС Windows отображаются только при выключенном флажке Использовать маленькие значки в настройках панели задач. При работе под управлением Ubunty Unity, может не происходить никаких визуальных эффектов, если система «1С:Предприятие» запущена под правами суперпользователя (root).

6.4. Порядок разработки командного интерфейса

При разработке командного интерфейса обычно выполняется следующая последовательность действий:

● в начале разработки конфигурации определяется ее структура с точки зрения предметной области, т. е. создается дерево подсистем конфигурации;

● создается состав ролей, т. е. определяется, для кого предназначена данная конфигурация;

● при создании новых объектов конфигурации (справочников, документов и т. д.), как правило, они сразу относятся к тем или иным подсистемам, для объектов назначаются права доступа по ролям;

● если не устраивает стандартное расположение команд и их видимость по умолчанию, то выполняется редактирование свойства Командный интерфейс необходимых подсистем и редактирование состава команд тех форм, в которых автоматически размещены параметризованные команды необходимых объектов (перехода к подчиненному списку и ввода на основании).

Уже эти минимальные действия приведут к тому, что в соответствующих разделах командного интерфейса появятся команды открытия форм списков объектов, команды ввода новых объектов (если включена их видимость в редакторе фрагмента командного интерфейса). Кроме того, если это определено в свойствах объекта, в формах других объектов конфигурации появятся команды ввода на основании, перехода к списку по регистратору, перехода к списку по владельцу и т. д.

Рассмотрим пример создания документа Расход товара. При его создании мы сделаем следующее:

● укажем, что документ будет относиться к подсистемам Торговый учет и Бухгалтерия;

● установим ролям Менеджер по продажам и Администратор права на работу с этим документом;

● укажем, что документ вводится на основании документов Счет и Заказ покупателя;

● укажем, что он является регистратором для регистра Остатки товаров на складах.

Эти действия приведут к появлению команды Расход товара в панели навигации раздела Торговый учет в том случае, если пользователь обладает ролью Менеджер по продажам или административными правами.

Кроме того, в формах документов Счет и Заказ покупателя появится команда подменю Создать на основании, предназначенная для ввода расходной накладной. Нам не понадобилось редактировать интерфейсы для пользователей с такими ролями и формы документов Счет и Заказ покупателя.

Стандартное представление команды перехода к списку накладных (Расход товара) может выглядеть неточным. Для его переопределения заполним свойство Представление списка документа РасходТовара и укажем там Продажи.

Допустим, что нас не устраивает представление объекта по умолчанию (которое участвует в представлении команд) и мы хотим изменить его так, чтобы представление команды ввода на основании читалось следующим образом: Продажа: создать на основании. Для этого необходимо заполнить свойство Представление объекта документа Расход товара текстом Продажа.

Теперь обратим внимание на то, что при стандартном размещении команды она находится в середине списка команд раздела Торговый учет. Предположим, что команда достаточно важна для этого раздела. Мы переходим к редактору Все подсистемы (или к редактору командного интерфейса подсистемы Торговый учет) и переносим команду в группу Важное. Раздел Бухгалтерия при этом не трогаем, оставляя там размещение команды по умолчанию.

Наконец, обратим внимание на видимость команд по умолчанию. В форме документа Расход товара появилась команда перехода к списку записей регистра Остатки товаров на складах, но она по умолчанию невидима. Предположим, что эта команда важна для администратора системы и действительно по умолчанию не нужна менеджеру. Для того чтобы это отразить, создадим форму документа Расход товара, перейдем к редактированию командного интерфейса и для команды перехода к списку регистра установим видимость для роли Администратор, а видимость для менеджера менять не будем.

Для администратора системы с его широкими правами доступа число команд оказалось слишком большим. Предположим далее, что командой перехода к списку расходных накладных он будет пользоваться крайне редко. Для того чтобы облегчить его командный интерфейс, опять перейдем к редактированию команд в редакторе Все подсистемы и для нашей команды снимем видимость для роли Администратор.

Также можно для менеджера по продажам установить видимость по умолчанию для команды добавления документа Расход товара в панели действий, чтобы он смог вызывать ввод этого документа без обращения к списку документов.

В процессе работы с конфигурацией пользователь может настраивать видимость команд по своему усмотрению.